package framework;


public interface GraphicsWrapper {
	/**
	 * @param color an ARGB color
	 */
	public void setColor(final Color the_color);
	
	public void fillRect(final int the_x, final int the_y, final int the_width,
			final int the_height);
	/**
	 * 
	 * @param the_x the top left corner of the bounding box.
	 * @param the_y the top left corner of the bounding box.
	 * @param the_width
	 * @param the_height
	 */
	public void fillOval(final int the_x, final int the_y, final int the_width,
			final int the_height);
	
	Rectangle getStringBounds(final String the_string);
	/**
	 * @return when drawing a string, the farthest a character will dip down below
	 * the baseline.  Identical to http://docs.oracle.com/javase/7/docs/api/java/awt/FontMetrics.html#getMaxDescent%28%29
	 */
	public int getMaxDescent();
	public void drawString(final String the_string, final int the_x, final int the_y);

	public ImageTinter newImageTinter(final Color the_color);
	public ImageWrapper newImage(final int the_width, final int the_height);
	public void drawImage(final ImageWrapper the_image, final int the_x, final int the_y);
	public void translate(final double the_x, final double the_y);
	public void scale(final double the_x, final double the_y);
	/**
	 * Saves the matrix responsible for translating and scaling to a stack.
	 */
	public void saveMatrix();
	public void restoreMatrix();
	public int getWidth();
	public int getHeight();
	public void dispose();
	/**
	 * Clears the image as if it was freshly created.
	 */
	public void clear();
}
